package org.epanetgrid.otimizacao.tui;

import static org.epanetgrid.otimizacao.tui.ArgOptions.FO;
import static org.epanetgrid.otimizacao.tui.ArgOptions.PLANILHA_XLS;
import static org.epanetgrid.otimizacao.tui.ArgOptions.REPRESENTATIVAS;

import java.io.File;

import org.epanetgrid.otimizacao.OtimizadorBuilder;
import org.epanetgrid.otimizacao.OtimizadorObservable;

public class OtimizadorMain {

	public void start(ArgOptions argOptions, StatusOtimizacao...statusOtimizacoes) {
		
		OtimizadorBuilder builder = new OtimizadorBuilder();
		
		BuilderConfigurator.configureBuilder(builder, argOptions);

		OtimizadorObservable otimizador = builder.build();
		
		for (StatusOtimizacao statusOtimizacao : statusOtimizacoes) {
			otimizador.addObserver(statusOtimizacao);			
		}

		if( argOptions.hasOption( PLANILHA_XLS ) ) {
			File file = new File(argOptions.getOptionValue( PLANILHA_XLS ));
			if (file.exists()) {
				System.err.println("Arquivo existente, por favor remova " + file + " ou selecione outro arquivo.");
				System.exit(2);
			}
			int numRepresentativas = 5;
			if (argOptions.hasOption(REPRESENTATIVAS)) {
				numRepresentativas = new Integer(argOptions.getOptionValue( REPRESENTATIVAS ));
			}
			otimizador.addObserver(new StatusOtimizacaoXLS(argOptions.getOptionValues(FO).length, numRepresentativas, file));
			
		}

		otimizador.start();
	}
	
}
